// 220124 2018

// 上传文件
// 表单 enctype 属性设置为 multipart/form-data

/*
Postman测试：
1、不传文件
TypeError: Cannot read properties of undefined (reading '0')
2、传一个图片
MulterError: Unexpected field

*/

var express = require('express');
var app = express();
var fs = require('fs');

var bodyParser = require('body-parser');

// Error: Cannot find module 'multer'
// npm install multer
// multer@1.4.4
// node.js 中间件，用于处理 enctype="multipart/form-data"（设置表单的MIME编码）的表单数据
var multer = require('multer');

app.use(bodyParser.urlencoded({ extended: false }));

app.use(multer({ dest: '/tmp/'}).array('image'));

// 接收文件
app.post('/file_upload', function(req, res) {
	console.log(req.files[0]);
	
	var fname = req.files[0].originalname;
	
	// 这种方式是 存储到 本文件同目录下
	console.log(__dirname);
	// var des_file = __dirname + "/" + fname;
	// 改为存储到D盘
	var des_file = "d:/" + fname;
	console.log(des_file);
	fs.readFile(req.files[0].path, function(err, data) {
		fs.writeFile(des_file, data, function(err) {
			if (err) {
				console.log(err);
			} else {
				response = {
					message: '文件上传成功',
					filename: fname,
					filesize: req.files[0].size + '字节'
				};
				
				// 删除文件
				// TODO
			}
			
			// 返回
			console.log(response);
			res.end(JSON.stringify(response));
		});
	});
});

// 启动服务器
var server = app.listen(8888, 'localhost', function() {
	var host = server.address().address;
	var port = server.address().port;
	
	console.log('服务已启动：http://%s:%s', host, port)
});
